summaryrefslogtreecommitdiffstats
path: root/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PermissionsHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PermissionsHandler.java')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PermissionsHandler.java35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PermissionsHandler.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PermissionsHandler.java
new file mode 100644
index 000000000..2eb200da4
--- /dev/null
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PermissionsHandler.java
@@ -0,0 +1,35 @@
+package org.yuzu.yuzu_emu.utils;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Build;
+
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.FragmentActivity;
+
+import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
+
+public class PermissionsHandler {
+ public static final int REQUEST_CODE_WRITE_PERMISSION = 500;
+
+ // We use permissions acceptance as an indicator if this is a first boot for the user.
+ public static boolean isFirstBoot(final FragmentActivity activity) {
+ return ContextCompat.checkSelfPermission(activity, WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED;
+ }
+
+ @TargetApi(Build.VERSION_CODES.M)
+ public static boolean checkWritePermission(final FragmentActivity activity) {
+ if (isFirstBoot(activity)) {
+ activity.requestPermissions(new String[]{WRITE_EXTERNAL_STORAGE},
+ REQUEST_CODE_WRITE_PERMISSION);
+ return false;
+ }
+
+ return true;
+ }
+
+ public static boolean hasWriteAccess(Context context) {
+ return ContextCompat.checkSelfPermission(context, WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
+ }
+}